package com.itheima.algorithm.recursion_multi;

import java.util.LinkedList;

/**
 * 汉诺塔
 */
public class HanoiTower {

    /**
     * 柱子a
     */
    static LinkedList<Integer> a = new LinkedList<>();
    /**
     * 柱子b
     */
    static LinkedList<Integer> b = new LinkedList<>();
    /**
     * 柱子c
     */
    static LinkedList<Integer> c = new LinkedList<>();

    /**
     * @param n 圆盘个数
     * @param a 源
     * @param b 借助
     * @param c 目标
     */
    static void move(int n, LinkedList<Integer> a, LinkedList<Integer> b, LinkedList<Integer> c) {
        if(n==0){
            return;
        }
        move(n - 1, a, c, b);
        //中间
        c.addLast(a.removeLast());
        print();
        move(n - 1, b, a, c);
    }

    /**
     * 向底部添加元素
     *
     * @param n
     */
    static void init(int n) {
        for (int i = n; i >= 1; i--) {
            a.addLast(i);
        }
    }

    public static void main(String[] args) {
        init(3
        );
        print();

        move(3,a,b,c);


    }

    private static void print() {
        System.out.println("----------------------------");
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }


}
